<?php

class CreerSeanceAction extends Action{
	
	function execute( HttpRequest $request ){
			
			//on recupere nos dao	
		$DAOfactory=AbstractDAOFactory::getDaoFactory(AbstractDAOFactory::MYSQL);
		$seanceDAO=$DAOfactory->getSeanceDAO();
		$filmDAO=$DAOfactory->getFilmDAO();
		$salleDAO=$DAOfactory->getSalleDAO();
		
		$seance=new Seance();
		//on charge le film de la seance
		$filmTab=$filmDAO->getById($request->getParameter('idfilm'));
		$film=$filmTab[0];
		//on charge la  salle
		$salleTab=$salleDAO->getById($request->getParameter('idsalle'));
		$salle=$salleTab[0];
		//on hydrate notre seance
		$seance->setFilm($film);
		$seance->setSalle($salle);
		//on verifie les donnees
		$param=array('dateseance', 'heureseance');
	    $resultat=$this->isFieldsFilled($param,$request);
	
		if ($resultat==true){
			
				
				//on recupere les parametre du formulaire 
				$seance->setDateSeance($request->getParameter('dateseance'));
				$seance->setHeureSeance($request->getParameter('heureseance'));
				
		
				if ($seanceDAO->research($seance)){
				//si il n'esxiste pas de seance avec les meme parametres on l'insere en base et on passe les objets pour la vue
					$seanceDAO->insert($seance);
					$listeSeances=$seanceDAO->getSeancesByFilmId($film->getId());
					$request->addObject('film',$film);
					$request->addObject('listeSeances',$listeSeances);
					return self::ACTION_OK;
				}
				else{
					//sinon on envoie un message pour que la vue puisse le recuperer
					$listeSalles=$salleDAO->getAll();
					$request->addObject('listeSalles',$listeSalles);
					$request->addObject('seance',$seance);
					$request->addMessage('Une seance avec les meme parametres (salle,date,heure) existe deja pour ce film');
					return self::ACTION_KO;
				}
		}
		else{
				//tous les champs ne sont pas bien renseignés
				$listeSalles=$salleDAO->getAll();
				$request->addObject('listeSalles',$listeSalles);
				$request->addObject('seance',$seance);
				$request->addMessage('Tout les champs ne sont pas correctement saisis');
				return self::ACTION_KO;
		}
		

	   
		
	}
	
	function isFieldsFilled(Array $param,$request){
		//on fait une simple verif de la présence des données coté serveur au cas ou l'utilisateur aurait
		//désactivé le javscript l'essentiel des controles etant realise cote client
		$retour=true;
		foreach($param as $cle=>$valeur){
			if ($request->getParameter($valeur)==""){
				$retour=false;
			}
		}
		return $retour;
	}
		
	

	
}